Surfaces of physical objects are commonly scanned to generate point clouds. A point cloud, for instance, can include points (e.g., vertices) in a three-dimensional coordinate system. According to an example, points included in a point cloud can be defined by x, y, and z coordinates. Points in a point cloud typically represent a measured surface of a physical object (e.g., external surface of the physical object).
A point cloud oftentimes is generated by a device such as a laser scanner, a camera, etc. The device can measure a large number of points on the surface of the physical object. However, imprecision of the device that measures the surface of the physical object can introduce random noise into the data included in the point cloud.
Various applications can reconstruct and/or render a surface implied by a sample of points included in a point cloud. As part of reconstruction and/or rendering the implied surface, a surface normal, i.e. a vector that is approximately perpendicular to the implied surface at a point in the point cloud, is oftentimes computed and assigned to such point. For example, respective normals are typically computed and assigned to each point in the point cloud. However, conventional techniques for computing normals, such as principal component analysis (PCA), are oftentimes prone to error in the presence of noise. Thus, noise introduced by devices used to generate point clouds, as well as noise introduced into the point clouds by substantially any other sources, can detrimentally impact conventional techniques for computing surface normals, which can adversely affect reconstruction and/or rendering of surfaces implied by the point clouds.